<template>
	<view>
		<zaudio style="heigh:0;background:#55deff" ref="zaudio"  theme="theme3"></zaudio>
	</view>
</template>

<script>
	import zaudio from '@/components/uniapp-zaudio/zaudio';
	export default {
		name:"websocket",
		components: {
			zaudio
		},
		data() {
			return {
				vedioUrl:'',
				ws:null
			};
		},
		onShow() {
			
		},
		methods:{
			simulateClick() {
				let data =[
					{
						src:this.vedioUrl,
						title: "恭喜发财",
						singer: "刘德华",
						coverImgUrl:
						"https://img.1ting.com/images/special/75/s150_f84ef5082b0420f74cd2546b986ab0fc.jpg",
					},
				];
				this.$zaudio.setAudio(data); //添加音频
				this.$zaudio.operate(0); //手动去渲染第1首音频
				this.$zaudio.stop()//渲染第一首音频
				setTimeout(()=>{
					this.$refs.zaudio.virClivk();
				},500)
			},
			init(){
				// if(this.ws){
				// 	return
				// }
				//创建一个webSocket实例，执行后，客户端就会与服务端连接
				var ws = new WebSocket(this.$api.wss); 
				//当WebSocket创建成功时，触发onopen事件
				ws.onopen = function(){
					// console.log("open");
				}
				//当客户端收到服务端发来的消息时，触发onmessage事件
				ws.onmessage = (e) => {
					//e.data 的数据格式也是字符串，手动解析这些数据才能得到其他格式的数据。
					const _data = JSON.parse(e.data);
					// 在组件挂载后模拟点击
					switch (_data.type) {
						case 'mchNotice':
							console.log('mchNotice');
							let content = _data.content;
							// 假设你有一个base64编码的音频字符串
							const base64Audio = 'data:audio/wav;base64,' + content; // 这里替换成实际的base64字符串
							this.vedioUrl = base64Audio;
							this.simulateClick();
							break;
						case 'bind':
							if(uni.getStorageSync('userInfo')){
								let user_id = JSON.parse(uni.getStorageSync('userInfo')).user_id;
								let bindData = {type:'bind',fromId:user_id};
								ws.send(JSON.stringify(bindData))
							}
							break;
						default:
							break;
					}
					console.log(_data);
				}
				//当客户端收到服务端发送的关闭连接请求时，触发onclose事件
				ws.onclose = function(e){
					console.log("close");
				}
				//如果出现连接、处理、接收、发送数据失败的时候触发onerror事件
				ws.onerror = function(e){
					console.log(error);
				}
				this.ws = ws;
			},
			close() {
				this.ws.close();
			}
		},
		
	}
</script>

<style>

</style>
